package cn.jasonone.tio.tcp.handler;

import cn.jasonone.tio.tcp.model.Header;

import java.io.Serializable;
import java.nio.charset.Charset;
import java.util.Map;

/**
 * 序列化处理器
 * @author xujie
 * @version 1.0
 * @date 2022/1/18 10:21
 */
public interface SerializationHandler<T> {
    /**
     * 序列化
     * @param obj
     * @param context 上下文参数,在命令处理器中更改
     * @param charset 封包的字符集
     * @return
     */
    byte[] serialize(Header header, Map<String, Object> context, T obj, Charset charset) throws Exception;

    /**
     * 反序列化
     * @param bytes
     * @param context 上下文参数,在命令处理器中更改
     * @param charset 封包的字符集
     * @return
     */
    T deserialize(Header header,Map<String, Object> context,byte[] bytes, Charset charset) throws Exception;
}
